﻿// Использование виртуальных методов

using System;

class VirtualDemo
{
    public static void _Main()
    {
        VirtualShape2D vs = new VirtualShape2D(10, 19, "");
        VirtualTriangle2D t1;
        t1 = new VirtualTriangle2D(10, 19);

        Console.WriteLine("Площадь прямоугольника равно: {0}", vs.Square());
        Console.WriteLine("Площадь треугольника равно: {0}", t1.Square());

        for (int i = 0; i < 10; i++)
        { 
            t1 = new VirtualTriangle2D(10, 19);
            Console.WriteLine(t1);
        }

        Console.ReadLine();
    }
}
// Базовый класс фигуры
class VirtualShape2D
{
    protected double Width;
    protected double Height;
    protected string Name;
    
    public VirtualShape2D(double w, double h, string name)
    {
        Width = w;
        Height = h;
        Name = name;
    }

    public virtual double Square()
    {
        return Width * Height;
    }
}

class VirtualTriangle2D : VirtualShape2D
{
    static int count = 0;
    public VirtualTriangle2D(double w, double h)
        : base(w, h, "Треугольник")
    {
        Name = base.Name;
        count++;
    }

    public override double Square()
    {
        return (Width * Height) / 2;
    }

    public override string ToString()
    {
        return "Это треугольник #" + count + " с площадью " + Square();
    }
}